package net.pimpas.resourcebundle.serviceprovider;

import java.util.Locale;
import java.util.Set;

import net.pimpas.core.serviceprovider.ServiceProvider;
import net.pimpas.resourcebundle.exception.MessageKeyNotFoundException;
import net.pimpas.resourcebundle.exception.ResourceBundleNotFoundException;

public interface ResourceBundleServiceProvider extends ServiceProvider {
	String getMessage(String bundle, Class clazz, ResourceBundleServiceProviderType type,
			String key, Locale l, String... parameters) throws ResourceBundleNotFoundException,
			MessageKeyNotFoundException;
	
	String getMessage(String bundle, Class clazz, String key, ResourceBundleServiceProviderType type,
			String... parameters) throws ResourceBundleNotFoundException, MessageKeyNotFoundException;
	
	Set<String> getMessageKeySet(String bundle, Class clazz, ResourceBundleServiceProviderType type,
			Locale l) throws ResourceBundleNotFoundException;
	
	Set<String> getMessageKeySet(String bundle, Class clazz, ResourceBundleServiceProviderType type)
	throws ResourceBundleNotFoundException;
	
	String getMessage(String bundle, String key, Class clazz, String... parameters)
	throws ResourceBundleNotFoundException,	MessageKeyNotFoundException;
	
	String getMessage(String bundle, Class clazz, String key, Locale l, String... parameters)
	throws ResourceBundleNotFoundException,	MessageKeyNotFoundException;
	
	Set<String> getMessageKeySet(Class clazz, ResourceBundleServiceProviderType type)
	throws ResourceBundleNotFoundException;
	
	Set<String> getMessageKeySet(Class clazz, ResourceBundleServiceProviderType type, Locale l)
	throws ResourceBundleNotFoundException;

	String getMessage(Class clazz, String key, ResourceBundleServiceProviderType type, String... parameters)
	throws ResourceBundleNotFoundException,	MessageKeyNotFoundException;

	String getMessage(Class clazz, ResourceBundleServiceProviderType type, String key, Locale l, String... parameters)
	throws ResourceBundleNotFoundException,	MessageKeyNotFoundException;

	String getMessage(Class clazz, String key, Locale l, String... parameters)
	throws ResourceBundleNotFoundException,	MessageKeyNotFoundException;
}